$themes: (
  light: ( 
    //字体
    font_color1: #000,
    //背景
    background_color1: #fff,
    // 背景渐变
    background_gradient1:#F8FBFD,
    //边框
    border_color1: #e8ebf0,
    //边框阴影
    box_shadow_color1: rgba(127, 131, 168, 0.2)),
  dark: ( 
    //字体
    font_color1: #fff,
    //背景
    background_color1: #000,
    //背景渐变
    background_gradient1:#DD1C1C,
    //边框
    border_color1: #34383c,
    // 阴影
    box_shadow_color1: rgba(0, 0, 0, 0.4)),
);

//遍历主题map，生成SCSS全局变量
@mixin themeify {
  @each $theme-name, $theme-map in $themes {
    //!global 把局部变量强升为全局变量，以便后续使用
    $theme-map: $theme-map !global;

    //判断html的data-theme的属性值 #{}是sass的插值表达式
    //& sass嵌套里的父容器标识 
    //@content是混合器插槽，像vue的slot
    [data-theme="#{$theme-name}"] & {
      //插槽占位
      @content;
    }
  }
}

//声明一个根据Key获取颜色的方法
@function theme-value($key) {
  @return map-get($theme-map, $key);
}

//设置背景颜色
@mixin background-color($name) {
  @include themeify {
    background-color: theme-value($name);
  }
}

//设置字体颜色
@mixin font-color {
  @include themeify {
    color: theme-value("font-color");
  }
}

//设置边框颜色
@mixin border-color {
  @include themeify {
    border-color: theme-value("border-color");
  }
}

// https://blog.csdn.net/weixin_44326389/article/details/120421104